PDA

View Full Version : Aiuto semplice programma in C


Emofelix
08-12-2011, 14:25
Ragazzi vi chiedo aiuto per un semplice programma che mi sta facendo diventare scemo. Il testo è il seguente, 2 array uno per i codici degli articoli e l altro per i prezzi. le richieste sono le seguenti:

1) inserire la dimensione degli array, stessa per entrambi

2) visualizzare i codici degli articoli il cui prezzo unitario è minore di 15 e dire quanti sono

3)visualizzare il prezzo dell articolo xyz12 e visualizzare un messaggio se il codice non è presente

4)visualizzare i codici degli articoli che hanno prezzo max indicando anche quanti sono

di seguito il codice

#include <stdlib.h>
#include <stdio.h>
#include <string.h>

int main()
{

char *art;
int *pr;
int dim=0,i,prezzo=0,cont=0,max=0,contmax=0;
char codice;
int c=0;


do
{
printf("inserisci la greandezza degli array: ");
scanf("%d",&dim);
}
while(dim<0);


art=(char*) malloc(sizeof(char)*dim);
pr = (int*)malloc(sizeof(int)*dim);


for(i=0;i<dim;i++)
{
printf("\n inserisci il codice ");
scanf("%s",&codice);
art[i]=codice;

printf("\n inserisci il prezzo rispettivo ");
scanf("%d",&prezzo);
pr[i]=prezzo;
}

for(i=0;i<dim;i++)
{
if(pr[i]<15)
{
printf("\n il seguetne codice ha prezzo minore di 15 %s:",&art[i]);
cont++;
}

}
printf("\ngli articoli con prezzo minore di 15 sono %d",cont);

for(i=0;i<dim;i++)
{
if(strcmp(&art[i],"xyz12")==0)
{
printf("prezzo %d",&pr[i]);
c=1;
}

}
if(c==0) printf("\ncodice non presente xyz");


max=pr[0];

for(i=0;i<dim;i++)
{
if(max<=pr[i])
{
max=pr[i];
}
}
for(i=0;i<dim;i++)
{
if(max==pr[i])
{
contmax++;
printf("\nil seguente codice ha prezzo massimo %s",&art[i]);
}
}
printf("\ni prezzi massimi sono %d \n",contmax);


system("pause");
return 0;
}

Il problema è che nella stampa non visualizza correttamente i codici inseriti e non fa il confronto con l articolo xyz12, qualche consiglio?

melko
09-12-2011, 19:22
il problema principale è che stai usando char *art come fosse un array di stringhe, quando in realtà è un array di char

PS usa i tag [ CODE ] per racchiudere codice

Emofelix
10-12-2011, 10:24
Conviene usare una matrice?

melko
10-12-2011, 10:36
se vuoi fare un array di stringhe usa char** (alla fine si, è una matrice, perché una stringa è un array di char),
dopo aver chiesto all'utente il numero di articoli lo allochi con malloc, dopodiché per ogni elemento che hai appena allocato (che sarà un char*), allochi un altro array (char) che sarà la stringa vera e propria.

Emofelix
11-12-2011, 11:20
thanks