1) Algorytm + program
Należy wczytać ciąg liczb rzeczywistych. wczytywanie należy zakończyć gdy pojawią sie dwa kolejne elementy ciągu równe 0.
znaleźć wśród ujemnych elementów ciągu element mający największą wartość bezwzględną.
2) Algorytm + program
Wczytaj elementy macierzy kwadratowej o wymiarach U x U (U na U). Znajdź sumę elementów poszczególnych wierszy macierzy.
Obliczone sumy maja stanowić elementy wektora który będzie wyświetlany na ekranie.
3) Algorytm + program
Wykorzystując funkcje i wskaźniki wczytać dwie tablice jednowymiarowe liczb rzeczywistych A oraz B o takiej samej liczbie elementów.
Z każdej z tych tablic rozpoczynając od elementu którego indeks jest określony z klawiatury przekopiuj do nowej tablicy
o N elementach, które elementy sa sumami odpowiednich elementow z utworzonych wczesniej tablic.
4. Dana jest liczba całkowita z przedziału [1,12] oznaczająca numer miesiąca. Wydrukować nazwy kwartału, w którym są miesiące o podanym numerze.
5. Należy wczytać ciąg liczb rzeczywistych. Wczytywanie należy zakończyć gdy pojawi się element ciągu równy 1000. Znaleźć wśród ujemnych elementów ciągu element mający najmniejszą wartość bezwzględną.
6. Należy wczytać liczby całkowite do tablicy posiadającej n wierszy i k kolumn. Znajdź sumy elementów w kolejnych kolumnach tablicy.
Obliczone sumy wyświetl w jednym wierszu na ekranie.
7. Algorytm + program.
Dana jest liczba całkowita z przedziału [1,4] oznaczająca numer
kwartału. Wydrukować nazwy miesięcy, które są w kwartale o podanym numerze.
8)Wczytaj z klawiatury dwie tablice jednowymiarowe liczb rzeczywistych A oraz B o takiej samej liczbie elementów. Wczytane tablice zapisz do roznych plikow. Kazda z tablic wyswietl na ekranie o ile wszystkie jej elementy sa rozne od zera. Gdy dana tablica jest tablica zer wyswietl na ekranie komunikat " Tablica X jest tablica zer" gdzie X to tablica A albo tablica B
9. odczytywanie i zapisywanie do plików:
10. Struktury:
/* Zad. 5.
Wykorzystujac tablice, zaloz katalog ksiazek pewnej biblioteki. Dla jednej ksiazki ma byc pamietane:
- nazwisko i imie autora,
- tytuł ksiazki,
- rok wydania.
Program ma zapewnic:
a) wydruk listy autorów, których ksiazki sa ujete w katalogu;
b) wydruk tytułów ksiazek wraz z nazwiskiem i imionami autorów;
c) okreslenie roku najnowszej ksiaaki. */
11) Dana jest liczba całkowita z przedziału [1,12] oznaczająca numer miesiąca. Wydrukować nazwy kwartału, w którym są miesiące o podanym numerze.
1)
#include <stdio.h>
#include <conio.h>
int main()
{
float a;
float b;
float max;
max=0;
do
{
printf ("podaj liczbe: ");
scanf ("%f",&a);
if (max>a)
max=a;
if (a==0)
{printf ("\n podaj liczbe: ");
scanf ("%f",&b);
if (max>b)
max=b; }
}
while (b!=0);
if (max!=0)
printf ("najwieksza wartosc bezwzgledna wsrod liczb ujemnych to:%f",max*(-1));
else
printf ("najwieksza wartosc bezwzgledna wsrod liczb ujemnych nie istnieje bo nie podano zadnej ujemnej");
getch();
}
2).
#include <stdio.h>
#include <conio.h>
int main()
{
int u;
int i;
int j;
int suma;
int c[i];
int tablica[u][u];
printf ("podaj rozmiar tablicy: ");
scanf ("%d",&u);
for (i=0;i<u;i++)
{
for (j=0;j<u;j++)
{
printf ("\n podaj element tablicy ");
scanf ("%d",&tablica[i][j]);
}
}
for (i=0;i<u;i++)
{
for (j=0;j<u;j++)
{
printf ("%4d",tablica[i][j]);
}
printf ("\n");
}
for (i=0;i<u;i++) // wyliczanie sumy można robić w tej samej pętli co wyświetlanie macierzy
{
suma=0;
for (j=0;j<u;j++)
{
suma=suma+tablica[i][j];
c[i]=suma; // sumę to chyba trzeba za wewnętrzną pętlą zapamiętywać
printf ("\n"); // wyświetlanie samych przejść do nowej linii????
}
}
printf ("sumy kolejnych wierszy: \n");
for (i=0;i<u;i++)
{
printf("\n %d",c[i]);
}
getch();
}
3).
#include <stdio.h>
#include <conio.h>
int kopiowanie(int *tab1,int *tab2,int *tab3, int rozmiar, int n)
{
int i, k=0;
for( i=n; i<rozmiar; ++i)
{
tab3[k]=tab1[i]+tab2[i];
k++;
}
return 0;
}
int drukowanie(int *tab3, int rozmiar, int n)
{
int i,x;
printf("\n\n\tTo sa wartosci tablicy2 po skopiowaniu z tablicy 1:\n");
x=rozmiar-n;
for (i=0; i<x; ++i)
printf("Element [%d] jest rowny %d.\n", i ,tab3[i]);
return 0;
}
int main(void)
{
int w, i,n, reszta;
printf("Podaj wielkosc tablicy1:");
scanf("%d", &w);
printf("podaj n");
scanf("%d",&n);
n--;
int tablica1[w];
int tablica2[w];
int tablica3[n];
printf("\nTeraz podaj wartości wszytstkich elemetow tab1:\n");
for (i=0; i<w; ++i)
scanf("%d", &tablica1[i]);
printf("\nTeraz podaj wartości wszytstkich elemetow tab2:\n");
for (i=0; i<w; ++i)
scanf("%d", &tablica2[i]);
kopiowanie(tablica1, tablica2, tablica3, w,n);
drukowanie(tablica3,w,n);
getch();
return 0;
}
4.
#include <stdio.h>
#include <conio.h>
int main()
{
int numermies=0;
while (numermies>12|| numermies<1)
{
printf("podaj numer miesiaca a ja zwróce kwartał");
scanf("%d", &numermies);
}
if (numermies>=1 && numermies<=3)
printf("kwartal 1");
if (numermies>=4 && numermies<=6)
printf("kwartal 2");
if (numermies>=7 && numermies<=9)
printf("kwartal 3");
if (numermies>=10 && numermies<=12)
printf("kwartal 4");
getch();
}
5.
#include <stdio.h>
#include <conio.h>
int main()
{
float a;
float b;
float max;
max=0;
do
{
printf ("podaj liczbe: ");
scanf ("%f",&a);
if (max>a)
max=a;
}
while (a!=1000);
if (max!=0)
printf ("najwieksza wartosc bezwzgledna wsrod liczb ujemnych to:%f",max*(-1));
else
printf ("najwieksza wartosc bezwzgledna wsrod liczb ujemnych nie istnieje bo nie podano zadnej ujemnej");
getch();
}
6.
#include <stdio.h>
#include <conio.h>
int main()
{
int n=0,k=0;
int i;
int j;
int suma;
int c[k];
int tablica[n][k];
printf ("podaj rozmiar tablicy: ");
scanf ("%d",&n);
scanf ("%d", &k);
for (i=0;i<n;i++)
{
for (j=0;j<k;j++)
{
printf ("\n podaj element tablicy ");
scanf ("%d",&tablica[i][j]);
}
}
for (i=0;i<n;i++)
{
for (j=0;j<k;j++)
{
printf ("%4d",tablica[i][j]);
}
printf ("\n");
}
for (i=0;i<n;i++) // wyliczanie sumy można robić w tej samej pętli co wyświetlanie macierzy
{
suma=0;
for (j=0;j<k;j++)
{
suma=suma+tablica[i][j];
c[i]=suma; // sumę to chyba trzeba za wewnętrzną pętlą zapamiętywać
printf ("\n"); // wyświetlanie samych przejść do nowej linii????
}
}
printf ("sumy kolejnych wierszy: \n");
for (i=0;i<k;i++)
{
printf("%d ",c[i]);
}
getch();
}
7.
.
#include <stdio.h>
#include <conio.h>
int main()
{
int numerkwart=0;
while (numerkwart>4|| numerkwart<1)
{
printf("podaj numer kwartalu a ja zwróce miesiace");
scanf("%d", &numerkwart);
}
switch (numerkwart)
{
case 1:
printf("styczen, luty, marzec");
break;
case 2:
printf("4, 5, 6");
break;
case 3:
printf("7,8,9");
break;
case 4:
printf("10,11,12");
break;
}
getch();
}
8.
#include <iostream.h>
#include <stdlib.h>
#include <stdio.h>
#include <stdlib.h>
void zapis(int A[], int B[],int rozm)
{
FILE *plik1;
FILE *plik2;
if ((plik1=fopen("plik1.txt", "w"))==NULL) {
printf ("Nie mogę otworzyć pliku plik1.txt do zapisu!\n");
exit(1);
}
if ((plik2=fopen("plik2.txt", "w"))==NULL) {
printf ("Nie mogę otworzyć pliku plik2.txt do zapisu!\n");
exit(1);
}
for(int i=0; i<rozm; i++)
{
fprintf(plik1, "%d\n",A[i]);
fprintf(plik2, "%d\n",B[i]);
}
fclose (plik1);
fclose (plik2);
}
void odczyt(int rozm)
{
int i=0;
int a[rozm];
int b[rozm];
FILE *plik1;
FILE *plik2;
int warunek=1,licznik=0;
plik1=fopen("plik1.txt","r");
plik2=fopen("plik2.txt","r");
while(feof(plik1)==0)
{
fscanf(plik1,"%d\n",&a[i]);
i++;
}
i=0;
while(feof(plik2)==0)
{
fscanf(plik2,"%d\n",&b[i]);
i++;
}
fclose (plik1);
fclose (plik2);
//wyswietlanie zgodnie z zalozeniami [poczatek]
//tablica A
for(int z=0; z<rozm; z++)
{
if(a[z]==0)
{ warunek=0;
licznik++;
} }
if(licznik==rozm)
{
printf("Tablica A jest tablica zer\n");
}
if(warunek!=0) {
printf("A:\n");
for(int y=0; y<rozm; y++)
{ printf("%d\n",a[y]);}}
if(warunek==0 && licznik<rozm) {
printf("W tablicy A znajduje sie element rowny zero zawartosc tablicy nie bedzie wydrukowana\n");
}
// tablica B
warunek=1;
licznik=0;
for(int z=0; z<rozm; z++)
{
if(b[z]==0)
{ warunek=0;
licznik++;
} }
if(licznik==rozm)
{
printf("Tablica B jest tablica zer\n");
}
if(warunek!=0) {
printf("B:\n");
for(int y=0; y<rozm; y++)
{ printf("%d\n",b[y]);}}
if(warunek==0 && licznik<rozm) {
printf("W tablicy B znajduje sie element rowny zero zawartosc tablicy nie bedzie wydrukowana\n");
}
//wyswietlanie zgodnie z zalozeniami [koniec]
}
int main(void)
{
int rozm=0;
printf("\n Podaj wymiar tablic\n");
scanf("%d", &rozm);
int A[rozm];
int B[rozm];
for(int i=0; i<rozm; i++)
{
printf("\npodaj element tablicy A\n");
scanf("%d",&A[i]);
printf("\npodaj element tablicy B\n");
scanf("%d",&B[i]);
}
zapis(A,B,rozm);
odczyt(rozm);
system("PAUSE");
return 0;
}
8. Kopiowanie na wskaznikach:
#include <stdio.h>
#include <conio.h>
int main()
{
int *wsk;
int tab []={1,2,3,4,5};
int i;
int *wsk2;
int tab2[5];
wsk2=tab2;
wsk=tab;
for ( i=0; i<5;i++){
printf("%d\t",*(wsk++));
}
wsk=tab;
for ( i=0; i<5;i++){
*(wsk2++)=*(wsk++);
}
wsk2=tab2;
for ( i=0; i<5;i++){
printf("%d\t",*(wsk2++));
}
getch();
}
9. odczytywanie i zapisywanie do plików:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
char adres[20];
int pow_miesz, licz_pok, numer_pietra, cena, i, z;
char c;
FILE *fp, *fp1;
fp1=fopen("C:/Documents and Settings/Marcin/Pulpit/mieszkania.txt","r=");
if(fp1==NULL)
exit(1);
while ((c=getc(fp1))!=EOF)
printf("%c",c);
fclose(fp1);
fp=fopen("C:/Documents and Settings/Marcin/Pulpit/mieszkania.txt","a");
if(fp==NULL)
exit(1);
printf("Podaj ilosc nowych mieszkan: ");
fprintf(fp,"\n Dane o mieszkaniu: \n");
scanf("%d",&z);
for (i=0; i<z; i++)
{
printf("Podaj adres mieszkania: ");
scanf("%s", &adres);
printf("Podaj powierzchnie mieszkania: ");
scanf("%d", &pow_miesz);
printf("Ile posiada pokoi: ");
scanf("%d", &licz_pok);
printf("Ktore pietro: ");
scanf("%d", &numer_pietra);
printf("Cena mieszkania: ");
scanf("%d", &cena);
fprintf(fp,"Podaj adres mieszkania: %s \n Podaj powierzchnie mieszkania: %d \n\ Ile posiada pokoi: %d\nKtore pietro: %d\nCena mieszkania: %d\n", adres, pow_miesz, licz_pok, numer_pietra, cena);
}
fclose(fp);
system("PAUSE");
return 0;
}
10. Struktury:
wrsja 1:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define ROZMIAR 1000
int ilosc=0;
typedef struct{
char nazwisko[20];
char imie[20];
char nazwa[20];
int rok;
}dane;
dane Tablica[ROZMIAR];
void Dodaj()
{
puts("Nazwisko autora: ");
fgets(Tablica[ilosc].nazwisko, sizeof Tablica[ilosc].nazwisko, stdin);
fgets(Tablica[ilosc].nazwisko, sizeof Tablica[ilosc].nazwisko, stdin);
puts("Imie autora: ");
fgets(Tablica[ilosc].imie, sizeof Tablica[ilosc].imie, stdin);
puts("Nazwa utworu: ");
fgets(Tablica[ilosc].nazwa, sizeof Tablica[ilosc].nazwa, stdin);
printf("Rok wydania: ");
scanf("%d",&Tablica[ilosc].rok);
ilosc=ilosc+1;
}
void Autor()
{
int ileAut=0, Dodaj=0;
dane Autorzy[ilosc];
for(int i=0;i<ilosc;i++)
{
for(int j=0;j<ileAut;j++)
{
if(0==strcmp(Autorzy[j].nazwisko,Tablica[i].nazwisko))
{
if(0==strcmp(Autorzy[j].imie,Tablica[i].imie))
{
Dodaj=1;
}
}
}
if(Dodaj==0)
{
strcpy(Autorzy[ileAut].nazwisko,Tablica[i].nazwisko);
strcpy(Autorzy[ileAut].imie,Tablica[i].imie);
ileAut++;
}
Dodaj = 0;
}
for(int i=0; i<ileAut; i++)
{
printf("\n%d. \nNazwisko: %sImie: %s\n",(i+1),Autorzy[i].nazwisko,Autorzy[i].imie);
}
}
void Lista()
{
for(int i=0; i<ilosc; i++)
{
printf("Nazwisko: %sImie: %sNazwa: %sRok wydania: %d\n\n",Tablica[i].nazwisko,Tablica[i].imie,Tablica[i].nazwa,Tablica[i].rok);
}
}
void Rok()
{
int max=0;
for(int i=0;i<ilosc;i++)
{
if(Tablica[i].rok>max)
max=Tablica[i].rok;
}
printf("Rok: %d\n",max);
}
void menu()
{
int i=0;
while(i!=5)
{
printf("1. Dodaj ksiazke\n2. Wyswietl liste autorow\n3. Wyswietl liste utworow\n4. Wyswietl rok wydania najpozniejszej publikacji\n5. Zakoncz\n");
scanf("%d",&i);
switch(i)
{
case 1: {Dodaj();break;};
case 2: {Autor();break;};
case 3: {Lista();break;};
case 4: {Rok();break;};
}
}
}
main()
{
menu();
system("pause");
}
wersja 2:
#include <stdio.h>
#include <stdlib.h>
/* Zad. 5.
Wykorzystujac tablice, zaloz katalog ksiazek pewnej biblioteki. Dla jednej ksiazki ma byc pamietane:
- nazwisko i imie autora,
- tytuł ksiazki,
- rok wydania.
Program ma zapewnic:
a) wydruk listy autorów, których ksiazki sa ujete w katalogu;
b) wydruk tytułów ksiazek wraz z nazwiskiem i imionami autorów;
c) okreslenie roku najnowszej ksiaaki. */
struct dane
{
char nazwisko [15] ;
char imie [25] ;
char tytul [100] ;
int rok;
}
tablica [2]; /*Zmienna o nazwie tablica*/
int main()
{
int i;
for (i=0 ; i<=2 ; i++)
{
printf("\n nazwisko : ") ;
scanf("%s", &tablica[i].nazwisko ) ;
printf("\n imie : ") ;
scanf("%s", &tablica[i].imie ) ;
printf("\n tytul : ") ;
scanf("%s", &tablica[i].tytul ) ;
printf("\n rok : ") ;
scanf("%d", &tablica[i].rok ) ;
}
{
printf("\n\n wybierz: \n 1) wydruk listy autorów, których ksiazki sa ujete w katalogu \n 2) wydruk tytułów ksiazek wraz z nazwiskiem i imionami autorów \n 3) okreslenie roku najnowszej ksiaaki \n\n");
}
/*wydruk*/
int x;
scanf("%d", &x);
switch(x)
{
case 1:
printf("\n\n\n\n nazwisko imie, tytul, rok \n" ) ;
for (i=0;i<=2;i++)
{
printf("%s ", tablica[i].nazwisko);
printf("%s ",tablica[i].imie);
printf("%s ", tablica[i].tytul);
printf("%d \n",tablica[i].rok);
}
break;
case 2:
printf("\n\n\n\n tytul, nazwisko imie, rok \n" ) ;
for (i=0;i<=2;i++)
{
printf("%s ", tablica[i].tytul);
printf("%s ", tablica[i].nazwisko);
printf("%s ", tablica[i].imie);
printf("%d \n", tablica[i].rok);
}
break;
case 3:
printf("\n\n\n\n rok, nazwisko imie, tytul \n" ) ;
for (i=0;i<=2;i++)
{
printf("%d ", tablica[i].rok);
printf("%s ", tablica[i].nazwisko);
printf("%s ", tablica[i].imie);
printf("%s \n", tablica[i].tytul);
}
break;
}
system("PAUSE");
return 0;
}
11)
#include <stdio.h>
#include <conio.h>
int main()
{
int numermies=0;
while (numermies>12|| numermies<1)
{
printf("podaj numer miesiaca a ja zwróce kwartał");
scanf("%d", &numermies);
}
if (numermies>=1 && numermies<=3)
printf("kwartal 1");
if (numermies>=4 && numermies<=6)
printf("kwartal 2");
if (numermies>=7 && numermies<=9)
printf("kwartal 3");
if (numermies>=10 && numermies<=12)
printf("kwartal 4");
getch();
}