programy z kolokwium


Zad 4 Napisać i zastosować w programie funkcję obl_c obliczającą wyrażenia.

Autor: Bartłomiej Durajczyk

#include <stdio.h>

#include <conio.h>

#include <math.h>

# define N 3

void obl_c(int [],int [],int [],int );

void wczyt_tab(int [],int );

void druk_tab(int [],int );

0x08 graphic

main()

{

int i, w[N];

int m[N],M[N];

wczyt_tab(w,N);

printf("\n");

wczyt_tab(m,N);

printf("\n");

wczyt_tab(M,N);

printf("\n");

obl_c(w,m,M,N);

getch();

return 0;

}

void obl_c(int w[N],int m[N],int M[N],int n) //tab1-w//tab2-m//tab3-M//

{

int i,cmax,c,x,f;

printf("Podaj liczbe X:");

scanf("%d",&x);

c=0;

cmax=0;

for(i=1;i<n;i++)

{

P: switch(m[i]) //zabezpieczenie na dzielenie przez zero//

{case 0:

{printf("\ndzielenie przez zero zabronione,podaj inna liczbe dla tablicy m:");

scanf("%d",&m[i]);

goto P;

}

}

f=x/m[i];

c+=(w[i])*(floor(f));

cmax+=(w[i])*(M[i]);

}

printf("\nC wynosi: %d\n",c);

printf("Cmax wynosi: %d",cmax);

}

void wczyt_tab(int x[N],int n)

{

int i;

for(i=1;i<n;i++)

{printf("\n podaj element %d=",i);

scanf("%d",&x[i]);

}

}

void druk_tab(int x[N],int n)

{ int i;

for(i=1;i<n;i++)

printf(" \n element %d=%d",i,x[i]);

}

Zad. 5 Napisać funkcję read_2D wczytującą tablicę dwuwymiarową o 5 kolumnach oraz funkcję oblicz_WK. Obliczającą sumę elementów wybranego wiersza oraz sumę elementów wybranej kolumny. Wywołać te funkcje dla zadanych tablic tab1[10][5] i tab2[20][5].

#include <stdio.h>

#include <conio.h>

# define N 5

void read_2D(int [][N],int );

void druk_tab(int [][N],int );

void oblicz_WK(int [][N],int );

main()

{

int i, tab1[10][N],tab2[20][N]; //wydruk z okna dla przykładu N=2//

0x08 graphic
read_2D(tab1,10);

printf("\n");

oblicz_WK(tab1,10);

printf("\n");

getch();

clrscr();

read_2D(tab2,20);

printf("\n");

oblicz_WK(tab2,20);

getch();

return 0;

}

void read_2D(int x[][N],int n)

{

int i,j;

for(i=0;i<n;i++)

for(j=0;j<N;j++)

{printf("\n podaj element [%d][%d]=",i,j);

scanf("%d",&x[i][j]);

}

}

void druk_tab(int x[][N],int n)

{ int i,j;

for(i=0;i<n;i++)

for(j=0;j<N;j++)

printf(" \n element [%d][%d]=%d",i,j,x[i][j]);

}

void oblicz_WK(int x[][N],int n)

{int i,j,sum_wr,sum_kol,wr,kol;

printf("\n numeracja wiersza i kolumny zaczyna sie od zera\n\n");

printf("\nPodaj w jakim wierszu chcesz obliczyc sume elementow: ");

scanf("%d",&wr);

printf("\nPodaj w jakiej kolumnie chcesz obliczyc sume elementow: ");

scanf("%d",&kol);

sum_wr=0;

sum_kol=0;

for(j=0;j<N;j++)

sum_wr+=x[wr][j];

for(i=0;i<n;i++)

sum_kol+=x[i][kol];

printf("\nSuma elementow wiersza %d wynosi: %d",wr,sum_wr);

printf("\nSuma elementow kolumny %d wynosi: %d",kol,sum_kol);

}

Zad.1 Wczytać z klawiatury tablicę zadanej liczby struktur typu pojazd o polach producent,typ,moc_max, przyspieszenie_100, zuzycie_paliwa,ilosc, cena i dopisac do istniejacego pliku pojazdy.dat, następnie odczytać i wydrukować plik oraz obliczyć łączną wartość wszystkich pojazdów.

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

#include <condefs.h>

#define N 2

0x08 graphic
struct pojazd

{

char producent[20];

char typ[20];

int moc_max;

int przyspieszenie_100;

int zuzycie_paliwa;

int ilosc;

int cena;

};

struct pojazd pojazdy[N]; //pojazdy[N]-tablica do zapisu

struct pojazd poj_buf[N]; //poj_buf[N]-struktura do odczytu

main()

{

int i,laczna_wartosc;

for (i=0;i<N;i++)

{printf("\n\n Podaj producenta pojazdu %d =>... ",i);

scanf("%s",pojazdy[i].producent);

fflush(stdin);

printf("\n Podaj typ pojazdu %d =>... ",i);

scanf("%s",pojazdy[i].typ);

fflush(stdin);

printf("\n Podaj moc maksymalna pojazdu %d =>... ",i);

scanf("%d",&pojazdy[i].moc_max);

fflush(stdin);

printf("\n Podaj przyspieszenie na 100 pojazdu %d =>... ",i);

scanf("%d",&pojazdy[i].przyspieszenie_100);

fflush(stdin);

printf("\n Podaj zuzycie paliwa pojazdu %d =>... ",i);

scanf("%d",&pojazdy[i].zuzycie_paliwa);

fflush(stdin);

printf("\n Podaj ilosc pojazdow %d =>... ",i);

scanf("%d",&pojazdy[i].ilosc);

fflush(stdin);

printf("\n Podaj cene pojazdu %d =>... ",i);

scanf("%d",&pojazdy[i].cena);

fflush(stdin);

clrscr();

}

FILE*fp;

fp=fopen("pojazdy.dat","w+b"); //zgodnie z poleceniem powinno być r+b ale nie

// mamy danego pliku czyli trzeba go utworzyć

fwrite(&pojazdy,sizeof(pojazd),N,fp);

fclose(fp);

i=0;

fp=fopen("pojazdy.dat","r+b");

fseek(fp,0,SEEK_SET);

laczna_wartosc=0;

while(fread(&poj_buf[i],sizeof(pojazd),1,fp)) //pierwsza wersja//

{printf("\nProducent pojazdu %d =>%s",i,poj_buf[i].producent);

printf("\nTyp pojazdu %d =>%s",i,poj_buf[i].typ);

printf("\nMoc maksymalna pojazdu %d =>%d",i,poj_buf[i].moc_max);

printf("\nPrzyspieszeni na 100 pojazdu %d =>%d",i,poj_buf[i].przyspieszenie_100);

printf("\nZuzycie paliwa pojazdu %d =>%d",i,poj_buf[i].zuzycie_paliwa);

printf("\nIlosc pojazdow %d =>%d",i,poj_buf[i].ilosc);

printf("\nCena pojazdu %d =>%d",i,poj_buf[i].cena);

laczna_wartosc=laczna_wartosc+( (poj_buf[i].ilosc)*(poj_buf[i].cena));

i++;

printf("\n\n");

}

printf("\n\n Laczna wartosc wszystkich pojazdow =%d",laczna_wartosc);

0x08 graphic
getch();

return 0;

}

Zad2. Dany jest plik liczby.dat. Obliczyć dla tego pliku sumę liczb należących do przedziału[min,max] oraz ilość wartości ujemnych.

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

#include <condefs.h>

main()

{ int buf,i,rozm_pliku,min,max,wart_uj,N,suma;

FILE*fp;

fp=fopen("liczby.dat","w+b"); //w poleceniu jest odczytac z pliku,

//ale najpierw trzeba go miec

if(fp)printf("\nPlik zostal utworzony\n");

else {printf("\nPlik nie zostal utworzony\n");getch();exit(1);}

fseek(fp,0,SEEK_SET);

printf("\nPodaj ile chcesz wpisac liczb calkowitych: ");

scanf("%d",&N);

for(i=0;i<N;i++)

{

printf("\npodaj liczbe calkowita:");

scanf("%d",&buf);

fwrite(&buf,sizeof(int),1,fp);

fflush(stdin);

}

fclose(fp);

printf("\nPodaj dolna granice przedzialu: ");

scanf("%d",&min);

printf("\nPodaj gorna granice przedzialu: ");

0x08 graphic
scanf("%d",&max);

fp=fopen("liczby.dat","r+b");

fseek(fp,0,SEEK_END);

rozm_pliku=ftell(fp)/sizeof(int);

fseek(fp,0,SEEK_SET);

suma=0;

wart_uj=0;

for(i=0;i<rozm_pliku;i++)

{

fread(&buf,sizeof(int),1,fp);

printf("\nElement %d=%d",i,buf);

if(buf>min&&buf<max)suma+=buf;

if(buf<0)wart_uj+=1;

}

printf("\n\nSuma liczb nalezacych do przedzialu [%d,%d] wynosi: %d",min,max,suma);

printf("\nIlosc wpisanych wartosci ujemnych wynosi: %d",wart_uj);

getch();

return 0;

}

Zad3. Napisać i zastosować w programie funkcję find znajdującą w tablicy znakowej ilość wystąpień dwóch zadanych znaków. (Działa ale z błędem)

#include <stdio.h>

#include <conio.h>

#include <stdlib.h>

#include <string.h>

#define N 20

void find(char[N],int n);

main()

{

char tab[N];

printf("\npodaj lancuch: ");

scanf("%s",tab);

fflush(stdin);

printf("podany lancuch wynosi: %s",tab);

find(tab,N);

getch();

return 0;

}

void find(char x[N],int n)

{

int dl,i,il_z1,il_z2;

char z1[N];

char z2[N];

printf("\npodaj znak z1: ");

scanf("%s",z1);

printf("podany znak wynosi: %s",z1);

printf("\n\npodaj znak z2: ");

0x08 graphic
scanf("%s",z2);

printf("podany znak wynosi: %s",z2);

dl=strlen(x);

printf("\ndlugosc lancucha wynosi %d",dl);

il_z1=0;

il_z2=0;

for(i=0;i<dl;i++)

{

if(x[i]==z1[N])il_z1+=1;

if(x[i]==z2[N])il_z2+=1;

}

fflush(stdin);

printf("\n\nilosc zadanego elementu %s wynosi: %d",z1,il_z1);

fflush(stdin);

printf("\nilosc zadanego elementu %s wynosi: %d",z2,il_z2);

}

błędy występują przy drukowaniu łańcucha z1 i z2, czasem wynik z z1 jest drukowany pod z2 , czasem są przekłamania, a czasem z2 działa poprawnie



Wyszukiwarka

Podobne podstrony:
Przykładowe zadania na 2 kolokwium z programowania w języku C, Studia, PWR, 1 semestr, Podstawy prog
Przykładowe zadania na 1 kolokwium z programowania w języku C, Studia, PWR, 1 semestr, Podstawy prog
program i kolokwium jagiellonsk Nieznany
Wilkosz, Wstęp do programowania, kolokwia KD1-09 10l
Wilkosz, Wstęp do programowania, kolokwia K2-08 09l
Wilkosz, Wstęp do programowania, kolokwia K2-10 11l
Kolokwium1 - Nowak(wyklad), Studia WIT - Informatyka, Programowanie C
program i zagadnienia do kolokwium, Technologia chemiczna, 5 semestr, odpady
zestawy-labC++-kolokwium 2 2006-2007, Politechnika Śląska MT MiBM, Semestr III, Języki programowania
c-kolokwium1, wisisz, wydzial informatyki, studia zaoczne inzynierskie, podstawy programowania, kol
zadania na kolokwium-programowanie, Automatyka i robotyka air pwr, II SEMESTR, Programowanie w język
kolokwium-zestawy-pytań-i-odpowiedzi-2, Politechnika Śląska MT MiBM, Semestr III, Języki programowan
kolokwium2-zap, opis programow, Wszystkie pliki poza zad1
kolokwium rozwiazania, studia, Semestr 1, Podstawy programowania 1 -PP1 Fryźlewicz Zbigniew, kolokwi
SO2 kolokwium1 programy sci

więcej podobnych podstron